package com.yonyou.cyxdms.basedata.client.service.basedata;

import com.yonyou.cyxdms.basedata.client.domains.vo.RegionVO;
import com.yonyou.cyxdms.basedata.client.dto.RegionConditionDTO;

import java.util.List;
import java.util.Map;

/**
 * 省市区县
 *
 * @author dengqiang
 * @since 2019/8/21
 */

public interface BaseCommonRegionService {

    /**
     * 查询所有省市区数据
     *
     * @param
     * @return java.util.List<com.yonyou.cyxdms.basedata.client.domains.vo.RegionVO>
     * @author dengqiang
     * @since 2019/8/21
     */
    List<RegionVO> listAllData();


    /**
     * 根据regionId查询省市区数据
     *
     * @param
     * @return java.util.List<com.yonyou.cyxdms.basedata.client.domains.vo.RegionVO>
     * @author dengqiang
     * @since 2019/9/16
     */
    RegionVO dataByRegionId(Long regionId);

    /**
     * 根据regionCode查询省市区数据
     *
     * @param regionCode
     * @return java.util.List<com.yonyou.cyxdms.basedata.client.domains.vo.RegionVO>
     * @author dengqiang
     * @since 2019/9/16
     */
    RegionVO dataByRegionCode(String regionCode);

    /**
     * 根据regionName查询省市区数据
     *
     * @param regionName
     * @return java.util.List<com.yonyou.cyxdms.basedata.client.domains.vo.RegionVO>
     * @author dengqiang
     * @since 2019/9/16
     */
     RegionVO dataByRegionName(String regionName);

    /**
     * 通用根据城市名称查询省市区ID列表
     *
     * @param
     * @return java.util.List<java.lang.Long>
     * @author dengqiang
     * @since 2019/10/31
     */
    List<Long> getRegionIdList(RegionConditionDTO regionConditionDTO);

    Map<Long, RegionVO> getAllRegion(String appId);

    /**
     * 未登录获取省市区
     *
     * @param appId
     * @return java.util.List<com.yonyou.cyxdms.basedata.client.domains.vo.RegionVO>
     * @author renwd
     * @since 2019/12/3
     */
    List<RegionVO> listAllDataWithoutLogin(String appId);

    /**
     * 未登录通过id获取省市区
     *
     * @param regionId id
     * @param appId appId
     * @return com.yonyou.cyxdms.basedata.client.domains.vo.RegionVO
     * @author renwd
     * @since 2019/12/3
     */
    RegionVO getDataByRegionId(Long regionId, String appId);

    /**
     * 未登录通过code获取省市区
     *
     * @param regionCode code
     * @param appId appId
     * @return com.yonyou.cyxdms.basedata.client.domains.vo.RegionVO
     * @author renwd
     * @since 2019/12/3
     */
    RegionVO getDataByRegionCode(String regionCode, String appId);


	List<RegionVO> listAllProvice();

}
